import Fly from "flyio/dist/npm/wx"
import store from '../store/index'
import { path} from '../utils/index'
const fly = new Fly()
const newFly = new Fly()
fly.config.baseURL = path
newFly.config.baseURL = path

const api = {
    async get(url, data) {
        try {
            let res = await fly.get(url, {
                ...data
            })
            res = res.data
            return new Promise((resolve, reject) => {
                if (res && res.code == 0 || res && res.status == 0) {
                    resolve(res)
                } else {
                    reject(res)
                }
            })
        } catch (err) {
            alert('服务器出错')
            console.log(err)
        }
    },
    async post(url, data) {
        try {
            let res = await fly.post(url, data instanceof Object ? data : {})
            res = res.data
            return new Promise((resolve, reject) => {
                if (res.code === 0) {
                    resolve(res)
                } else {
                    reject(res)
                }
            })
        } catch (err) {
            // return (e.message)
            alert('服务器出错')
            console.log(err)
        }
    },
}

fly.interceptors.request.use(function (request) {
    let access_token = store.state.access_token
    if (!access_token) {
        // fly.lock()
        // return new Promise((resolve, reject) => {
        //     wx.login({
        //         success: (res) => {
        //             let code = res.code;
        //             if (code) {
        //                 wx.getSetting({
        //                     success: (resCode) => {
        //                         // * 验证授权
        //                         if (resCode.authSetting['scope.userInfo']) {
        //                             wx.getUserInfo({
        //                                 success: (resUser) => {
        //                                     // * 获取用户信息
        //                                     let user = resUser
        //                                     // * 请求 accessToken
        //                                     newFly.post('oauth/access_token', {
        //                                         grant_type: 'password',
        //                                         client_id: 'f3d259ddd3ed8ff3843839b',
        //                                         client_secret: '4c7f6f8fa93d59c45502c0ae8c4a95b',
        //                                         encrypted_data: user.encryptedData,
        //                                         iv: user.iv,
        //                                         code: code
        //                                     }).then(res => {
        //                                         store.commit('setAccess_token', res.data.data)
        //                                         // fly.config.headers['Authorization'] = `${res.data.data.token_type} ${res.data.data.access_token}`
        //                                         request.headers['Authorization'] = `${res.data.data.token_type} ${res.data.data.access_token}`
        //                                         fly.unlock();//解锁后，会继续发起请求队列中的任务
        //                                         resolve(request)
        //                                     }).catch(() => {
        //                                         //fly.clear(); //clear the request queue
        //                                         fly.unlock();//解锁后，会继续发起请求队列中的任务
        //                                         reject()
        //                                     })
        //                                 },
        //                                 fail: (res) => {
        //                                     reject()
        //                                 }
        //                             })
        //                         } else {
        //                             reject()
        //                         }
        //                     }
        //                 })
        //             } else {
        //                 reject()
        //             }
        //         }
        //     })
        //     // resolve(res)
        //     // reject(res)
        // })

    } else {
        request.headers["Authorization"] = `${access_token.token_type} ${access_token.access_token}`;
    }
})

export default api

